/**
 * 学习抽象类
 */
(function () {
  /**
   * abstract 抽象类
   * 抽象类专门拿来给其他人继承 extends的
   * 不能创建实例
   * 
   * 抽象类中可以添加抽象方法
   */
  abstract class People {
    name: String;
    age: number;
    constructor(name: String, age: number) {
      this.name = name;
      this.age = age;
    }
    call() {
      console.log("我是父类")
    }
    /**
     * abstract 抽象防范
     * 抽象方法没有方法内容
     * 子类必须对抽象方法进行重写;
     */
    abstract fly(): void;
  }
  class Man extends People {
    sex: String;
    constructor(name: String, age: number, sex: String) {

      super(name, age);
      this.sex = sex;
    }
    call() {
      super.call();
    }
    fly() {
      console.log("我不会飞")
    }
  }
  const p = new Man('as', 23, '男');
  console.log(p);
  p.fly();
})();